'''
公共方法模块：习惯命名 utils
'''
from time import sleep

from selenium import webdriver
from selenium.webdriver.firefox.service import Service


class DriverUtil(object):
    '''浏览器对象管理类'''
    driver = None   # 浏览器对象变量初始化状态

    def get_driver(self):
        '''获取浏览器对象方法'''
        # 为了防止同一测试过程中，调用获取浏览器对象方法时，都会创建一个新的浏览器对象，因此有必要先判断对象是否存在，不存在是再创建

        if self.driver is None:     # 判断 driver 是否存在，不存在则创建，存在则直接返回 driver
            self.driver_path = "C:/Users/Lenovo/AppData/Local/Programs/Python/Python310/geckodriver.exe"
            service = Service(executable_path=self.driver_path)
            self.driver = webdriver.Firefox(service=service)
            self.driver.get("https://hmshop-test.itheima.net/")
            self.driver.maximize_window()    # 最大化窗口
            self.driver.implicitly_wait(10)  # 隐式等待
        return self.driver

    def quite_driver(self):
        '''退出浏览器对象方法'''
        # 必须保证浏览器对象 driver 存在，才能执行退出操作
        if self.driver:    # 等价于： if self.driver is not None:
            sleep(3)
            self.driver.quit()
            self.driver = None   # 保险手段：移除对象后，保留对象变量，以备下一次使用

if __name__ == '__main__':
    my_driver = DriverUtil()
    my_driver.get_driver()
    sleep(2)
    my_driver.quite_driver()